<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //node第二天作业

        //①. 整理以下不会改变原数组方法，写出数组方法的解释，并使用
        // 1. reduce
        // 参数：给定或不给定初始值循环每个数组元素操作的回调函数
        // 作用：循环每个数组元素拿到下一次进行同样的操作(函数内给定的操作)
        // 返回值：给定或不给定初始值循环每个数组元素操作的结果
        // 例如：
        // const arr = [1, 2, 3, 4, 5]
        // const res = arr.reduce((prev, item) => prev * item, 1)
        // console.log(res) //120
        // 2. filter
        // 参数：回调函数
        // 作用：过滤掉一些不符合条件的数组元素，返回含有剩下数组元素的一个新数组
        // 返回值：过滤掉一些不符合条件的数组元素后的新数组
        // 例如：
        // const nums = ['2', '4', '3', '5', '7', '6'];
        // const res = nums.filter(num => num> 5);
        // console.log(res);  //Array ["7", "6"]
        // 3. some
        // 参数：item, index, o
        // 作用：查找满足条件的元素，如果有一个满足返回true，否则返回false
        //      （找到一个满足的就返回true，然后不会继续找下去了）
        // 返回值：如果每一个都满足返回true，否则返回false
        // 例如：
        // const re = [6, 4, 7, 9, 8, 5].some((item) => item > 9)
        // console.log(re)  //false
        // 4. every
        // 参数：item, index, o
        // 作用：查找满足条件的元素，如果每一个都满足返回true，否则返回false
        // 返回值：如果每一个都满足返回true，否则返回false
        // 例如：
        // const re = [6, 4, 7, 9, 8, 5].every( item => item > 1 );
        // console.log( re );  //true
        // 5. map
        // 参数：回调函数
        // 作用：创建一个新数组，这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。
        // 返回值：新数组
        // 例如：
        // const arr = [1, 2, 3];
        // const res = arr.map(x => x * x);
        // console.log(res);   //Array [1, 4, 9]
            
            
        // ②. 整理出来以下会改变原数组的数组方法
            
        // 1. push        
        // 参数：接收一个或多个参数
        // 作用：向指定数组尾部添加元素
        // 返回值：新数组的长度
        // 例如：
        // const arr = ['a', 'b', 'c']
        // arr.push('d')
        // console.log(arr) // ['a', 'b', 'c', 'd']

        // const res = arr.push('e', 'f')
        // console.log(arr) // ['a', 'b', 'c', 'd', 'e', f]
        // console.log(res) // 6
        // 2. pop
        // 参数：无参数
        // 作用：删除指定数组末尾的元素
        // 返回值：指定数组末尾的元素(也就是被删除的这个元素)
        // 例如：
        // const arr = ['a', 'b', 'c']
        // console.log(arr.pop()) //'c'
        // console.log(arr) //['a', 'b']
        // 3. unshift
        // 参数：一个或多个数组元素
        // 作用：将一个或多个元素添加到数组的开头，并返回该数组的新长度
        // 返回值：该新数组的长度
        // 例如：
        // const arr = [1, 2, 3];
        // console.log(arr.unshift(4, 5));   //5
        // console.log(arr);  //Array [4, 5, 1, 2, 3]
        // 4. shift
        // 参数：无参数
        // 作用：从数组中删除第一个元素，并返回该元素的值。原数组会改变
        // 返回值：原数组第一个元素的值，即被删除的这个数组元素的值
        // 例如：
        // const arr = [1, 2, 3];
        // console.log(arr.shift());  //1
        // console.log(arr);          //Array [2, 3]
        // 5. sort
        // 参数：回调函数
        // 作用：从数组中删除第一个元素，并返回该元素的值。原数组会改变
        // 返回值：排序后的数组
        // 例如：
        // const arr=[2,1,3]
        // console.log(arr.sort());
        // console.log(arr);
        // 6. reverse
        // 参数：无参数
        // 作用：将数组反转
        // 返回值：反转后的数组
        // 例如：
        // const arr = [1, 2, 3, 4]
        // console.log(arr.reverse()) // [4, 3, 2, 1]
        // 7. splice
        // 参数：（指定修改的开始位置的索引，整数，表示要移除的数组元素的个数，要添加进数组的元素可以有多个）
        // 作用：通过删除或替换现有元素或者原地添加新的元素来修改数组，并以数组形式返回被修改的内容。此方法会改变原数组。
        // 返回值：由被删除的元素组成的一个数组。如果只删除了一个元素，则返回只包含一个元素的数组。如果没有删除元素，则返回空数组。
        // 例如：
       // const months = ['Jan', 'March', 'April', 'June'];
        // months.splice(1, 0, 'Feb');
        // console.log(months);   //Array ["Jan", "Feb", "March", "April", "June"]
        // // expected output: Array ["Jan", "Feb", "March", "April", "June"]

        // months.splice(4, 1, 'May');  //Array ["Jan", "Feb", "March", "April", "May"]
        // console.log(months);
    </script>
</body>
</html>